package com.browsesoft.adapter;

import java.util.Hashtable;
import java.util.LinkedList;

import com.browsesoft.EntityManager;
import com.browsesoft.user.User;

/**
 * 日程安排的一些工具
 */
public class CalendarTools {
	/**
	 * 指定时间用户是否外出 date的格式为yyyy-MM-dd hour的格式为hh:mm
	 */
	public static boolean isOut(String date, String hour, User user) {
		boolean isOut;
		LinkedList result = new LinkedList();
		// 得到某人的所以日程安排
		LinkedList outCalendars = getOutCalendarsWithUser(user);
		// 临时日程
		CalendarFormModel temp;
		for (int i = 0; i < outCalendars.size(); i++) {
			temp = (CalendarFormModel) outCalendars.get(i);
			// 如果该时间包含在该日程安排的时间范围内
			if (temp.isOutWithDate(date, hour)) {
				result.add(temp);
			}
		}
		// 如果这个时间的安排着外出
		if (result.size() > 0) {
			isOut = true;
		}
		// 没有外出
		else {
			isOut = false;
		}
		return isOut;
	}

	/**
	 * 得到某个人的所以外出的日程安排
	 */
	public static LinkedList getOutCalendarsWithUser(User user) {
		LinkedList result = new LinkedList();
		// 用户id
		String userid = user.getID();
		Hashtable ht = new Hashtable();
		// 添加用户id
		ht.put("userid", userid);
		ht.put("isout", "是");
		// 得到用户的所有外出日程
		result = FindCalendarsByAttr(ht);
		return result;
	}

	/**
	 * 通过属性找到日程安排
	 */
	public static LinkedList FindCalendarsByAttr(Hashtable ht) {
		try {
			return EntityManager.getInstance().getObjects(
					"com.browsesoft.adapter.CalendarFormModel", ht);
		} catch (Exception e) {
			System.out.println("日程安排中可能不包含所指定的属性！");
			return new LinkedList();
		}
	}
}